#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Finder Tools 清理脚本
用于清理项目中的测试目录、构建工件和缓存文件

注意：为避免测试文件和构建工件被提交到版本控制系统，
建议在 .gitignore 文件中添加以下内容：

# 测试目录
test_images/
test_output/

# 构建工件
*.egg-info/
build/
dist/
__pycache__/
*.py[cod]
"""

import os
import shutil
from pathlib import Path
import sys


def clean_project():
    """清理项目中的测试文件、构建工件和缓存文件"""
    # 获取当前脚本所在目录
    current_dir = Path(os.path.dirname(os.path.abspath(__file__)))
    
    print("开始清理 Finder Tools 项目...")
    
    # 要清理的目录
    test_dirs = [
        current_dir / "test_images",
        current_dir / "test_output"
    ]
    
    build_dirs = [
        current_dir / "finder_tools.egg-info",
        current_dir / "build",
        current_dir / "dist"
    ]
    
    # 清理测试目录
    for test_dir in test_dirs:
        if test_dir.exists():
            print(f"删除测试目录: {test_dir}")
            shutil.rmtree(test_dir)
    
    # 清理构建工件
    for build_dir in build_dirs:
        if build_dir.exists():
            print(f"删除构建工件: {build_dir}")
            shutil.rmtree(build_dir)
    
    # 清理所有 __pycache__ 目录和 .pyc 文件
    for root, dirs, files in os.walk(current_dir):
        # 跳过虚拟环境目录
        if "venv" in root or "env" in root:
            continue
            
        # 删除 __pycache__ 目录
        for dir_name in dirs:
            if dir_name == "__pycache__":
                pycache_path = os.path.join(root, dir_name)
                print(f"删除缓存目录: {pycache_path}")
                shutil.rmtree(pycache_path)
        
        # 删除 .pyc 文件
        for file_name in files:
            if file_name.endswith(".pyc"):
                pyc_path = os.path.join(root, file_name)
                print(f"删除缓存文件: {pyc_path}")
                os.remove(pyc_path)
    
    print("项目清理完成！")


if __name__ == "__main__":
    try:
        clean_project()
    except Exception as e:
        print(f"清理过程中出错: {e}", file=sys.stderr)
        sys.exit(1) 